/*
 * Copyright 2020-2030 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
*/
package com.gitee.minimalismstyle.fresh.flowable.api.model

import java.util.*

/**
 * DelegateTaskDto
 * @author maoxiaodong
 */
data class DelegateTaskDto(
    /** DB id of the task. */
    var id: String?
) {
    /** Name or title of the task. */
    var name: String? = null


    /** Free text description of the task.  */
    var description: String? = null

    /**
     * indication of how important/urgent this task is with a number between 0 and 100 where higher values mean a higher priority and lower values mean lower priority: [0..19] lowest, [20..39] low,
     * [40..59] normal, [60..79] high [80..100] highest
     */
    var priority: Int? = null

    /**
     * Reference to the process instance or null if it is not related to a process instance.
     */
    var processInstanceId: String? = null

    /**
     * Reference to the path of execution or null if it is not related to a process instance.
     */
    var executionId: String? = null

    /**
     * Reference to the process definition or null if it is not related to a process.
     */
    var processDefinitionId: String? = null

    /** The date/time when this task was created  */
    var createTime: Date? = null

    /**
     * The id of the activity in the process defining this task or null if this is not related to a process
     */
    var taskDefinitionKey: String? = null

    /** Indicated whether this task is suspended or not.  */
    var suspended: Boolean? = null

    /** The tenant identifier of this task  */
    var tenantId: String? = null

    /** The form key for the user task  */
    var formKey: String? = null

    /**
     * Returns the event name which triggered the task listener to fire for this task.
     */
    var eventName: String? = null

    /**
     * Returns the event handler identifier which triggered the task listener to fire for this task.
     */
    var eventHandlerId: String? = null


    /** The user id of the person responsible for this task.  */
    var owner: String? = null

    /**
     * The user id of the person to which this task is delegated.
     */
    var assignee: String? = null

    /** Due date of the task.  */
    var dueDate: Date? = null

    /**
     * The category of the task. This is an optional field and allows to 'tag' tasks as belonging to a certain category.
     */
    var category: String? = null

    var params: MutableMap<String, Any> = mutableMapOf()

}